#ifndef OPERATION_H
#define OPERATION_H
#include "constante.h"
#include "reel.h"
#include "entier.h"
#include "rationnel.h"
#include <cmath>

class operation
{
    operation();
};


struct Addition : public operation{
  static constante* apply(const constante&, const constante&);
};

struct Soustraction : public operation{
  static constante* apply(const constante&, const constante&);
};

struct Multiplcation : public operation{
  static constante* apply(const constante&, const constante&);
};

struct Division : public operation{
  static constante* apply(const constante&, const constante&);
};

struct Pow : public operation{
  static constante* apply(const constante&, const constante&);
};

struct Sign : public operation{
  static constante* apply(const constante&);
};

struct Square : public operation{
  static constante* apply(const constante&);
};

struct Cube : public operation{
  static constante* apply(const constante&);
};

struct Inv : public operation{
  static constante* apply(const constante&);
};

struct Sqrt : public operation{
  static constante* apply(const constante&);
};


struct Cos : public operation{
  static constante* apply(const constante&);
};
struct Cosh : public operation{
  static constante* apply(const constante&);
};
struct Sin : public operation{
  static constante* apply(const constante&);
};
struct Sinh : public operation{
  static constante* apply(const constante&);
};
struct Tan : public operation{
  static constante* apply(const constante&);
};
struct Tanh : public operation{
  static constante* apply(const constante&);
};
struct Log : public operation{
  static constante* apply(const constante&);
};
struct Ln : public operation{
  static constante* apply(const constante&);
};

#endif // OPERATION_H
